(function(_self, factory) {
	var nameSpace = 'customBtn_8809786768710978123';
	if (!window[nameSpace] && typeof factory === 'function') {
		var Builder = factory();
		window[nameSpace] = {
			initBtn : {}
		};
		/**
		 * 初始化方法
		 */
		window[nameSpace].init = function(el, options) {
			var identification = Math.floor(Math.round() * 10000000000)
					.toString();
			window[nameSpace].initBtn[identification] = new Builder(el,
					options, _self, identification);
		}
	}
})
		(
				window,
				function() {
					/**
					 * js,css文件加载方法
					 */
					var dynamicLoading = {
						css : function(path, name, callBk) {
							if (!path || path.length === 0) {
								throw new Error('argument "path" is required !');
							}
							var head = document.getElementsByTagName('head')[0];
							var link = document.createElement('link');
							link.href = path;
							link.rel = 'stylesheet';
							link.type = 'text/css';
							link.setAttribute('data-name', name);
							link.onload = function() {
								callBk();
							}
							head.appendChild(link);
						},
						insertCss : function(innerTexts, name) {
							var head = document.getElementsByTagName('head')[0];
							var style = document.createElement('style');
							style.type = 'text/css';
							style.setAttribute('data-name', name);
							try {
								style.appendChild(document
										.createTextNode(innerTexts));
							} catch (ex) {
								style.styleSheet.cssText = innerTexts;// 针对IE
							}
							head.appendChild(style);
						},
						checkCss : function(name) {
							var styleList = document
									.getElementsByTagName('style');
							for (var i = 0; i < styleList.length; i++) {
								if (styleList[i].getAttribute('data-name') === name)
									return true;
							}
							return false;
						},
						js : function(path, callBk) {
							if (!path || path.length === 0) {
								throw new Error('argument "path" is required !');
							}
							var head = document.getElementsByTagName('head')[0];
							var script = document.createElement('script');
							script.src = path;
							script.type = 'text/javascript';
							script.onload = function() {
								callBk();
							}
							head.appendChild(script);
						},
						checkJs : function(name) {
							var scriptList = document
									.getElementsByTagName('script');
							for (var i = 0; i < scriptList.length; i++) {
								if (scriptList[i].getAttribute('data-name') === name)
									return true;
							}
							return false;
						},
					}
					/**
					 * 浏览器
					 */
					function myBrowser() {
						var userAgent = navigator.userAgent; // 取得浏览器的userAgent字符串
						var isOpera = userAgent.indexOf("Opera") > -1;
						if (isOpera) { // 判断是否Opera浏览器
							return "Opera"
						}
						;
						if (userAgent.indexOf("Firefox") > -1) { // 判断是否Firefox浏览器
							return "FF";
						}
						;
						if (userAgent.indexOf("Chrome") > -1) {
							return "Chrome";
						}
						;
						if (userAgent.indexOf("Safari") > -1) { // 判断是否Safari浏览器
							return "Safari";
						}
						;
						if (userAgent.indexOf("compatible") > -1
								&& userAgent.indexOf("MSIE") > -1 && !isOpera) { // 判断是否IE浏览器
							return "IE";
						}
						;
					}
					/**
					 * 定义标签打印按钮的构造函数
					 * 
					 * @param {*}
					 *            options
					 * @param {*}
					 *            _self
					 */
					function labelPrintingBtn(el, options, _self,
							identification) {
						var self = this;
						self.window_self = _self;
						self.el = el;
						self.identification = identification;
						// 解析传进来的数据
						self.initParams(options);
						// 处理挂载
						self.initBtn(el);
						// 销毁自己
						self.beforeDestroy = function() {
							self = null;
						}
					}
					/**
					 * 构造函数的原型方法
					 */
					labelPrintingBtn.prototype = {
						initParams : function(options) {
							this.place = options.place;
							this.rowData = options.rowData;
							this.data = options.data;
						},
						initBtn : function(el) {
							/**
							 * 挂载dom初始化处理
							 */
							var innerTexts = '.labelPrintingBtnHandler {'
									+ 'background-color: rgba(0,0,0,0);'
									+ 'font-family: "Ping Fang SC", "Microsoft YaHei", Arial, Helvetica, sans-serif, "SimSun";'
									+ 'cursor: pointer;'
									+ 'white-space : nowrap;'
									+ 'border: 0;'
									+ 'overflow: hidden;'
									+ 'text-overflow: ellipsis;'
									+ '}'
									+ '.labelPrintingBtnBox { box-sizing: border-box; cursor: pointer; outline: none; font-family: inherit; white-space: nowrap;display: inline-block; margin-top: 5px; vertical-align: middle; margin-right: 5px;'
									+ ' background-color: #fff; border: 1px solid #d4d4d4; color: #666;font-size: 14px; line-height: 28px; border-radius: 15px; height: 30px;}'
									+ '.labelPrintingBtnBox:hover{ border-color: #1f85ec; }'
									+ '.labelPrintingBtnRow{color: #1f85ec;}'
									+ '.labelPrintingBtnRow:hover{color : #479bf3}'
									+ '.labelPrintingBtnLi{color : #333}'
									+ '.labelPrintingBtnLi:hover{color : #fff}';
							if (!dynamicLoading.checkCss('labelPrintingBtn')) {
								dynamicLoading.insertCss(innerTexts,
										'labelPrintingBtn');
							}
							// 挂载dom
							this.appendDom(el);
						},
						appendDom : function(el) {
							var self = this;
							var labelPrint = document.createElement('div'), labelPrintToolbar, labelPrintIcon;
							// 对代码片段进行配置
							el.appendChild(labelPrint);
							// 根据不同位置渲染按钮
							switch (this.place) {
							case 'toolbar':
								labelPrint.parentNode.setAttribute('class',
										'labelPrintingBtnBox');
								labelPrint.style.padding = '0 14px';
								// 加入icon
								labelPrintIcon = document.createElement('i');
								labelPrintIcon.setAttribute('class',
										'CAP cap-icon-dayin');
								labelPrintIcon.style.color = '#C3AF1C';
								labelPrint.appendChild(labelPrintIcon);
								// 加入name信息
								labelPrintToolbar = document
										.createElement('span');
								labelPrintToolbar.innerHTML = this.data
										&& this.data.name ? this.data.name : '';
								labelPrintToolbar.style.paddingLeft = '3px';
								labelPrint.appendChild(labelPrintToolbar);
								break;
							case 'li':
								labelPrint.innerHTML = this.data
										&& this.data.name ? this.data.name : '';
								labelPrint
										.setAttribute('class',
												'labelPrintingBtnLi labelPrintingBtnHandler')
								break;
							case 'row':
								labelPrint.innerHTML = this.data
										&& this.data.name ? this.data.name : '';
								labelPrint
										.setAttribute('class',
												'labelPrintingBtnRow labelPrintingBtnHandler')
								break;
							default:
							}
							labelPrint.onclick = function() {
								switch (self.place) {
								case 'toolbar':
									// 点击执行对应的操作
									self.implementClick();
									break;
								case 'li':
								case 'row':
									// 点击执行对应的操作
									self.implementClick(self.rowData);
									break;
								default:
								}

							}
							// 阻止数据污染
							labelPrint.parentNode.onclick = function(e) {
								e.stopPropagation();
							}
						},
						// 执行点击事件
						implementClick : function(rowData) {
							var self = this;
							var datas;
							var param = new Object();
							param.formId = getQueryParams().formId;
							if (!rowData && window.extendApi
									&& window.extendApi.getChooseId) {
								datas = window.extendApi.getChooseId();
								var size = datas.length;
								if(size != 1) {
									top.$.alert("以防误操作，只能选择一条数据！");
									return;
								}
								param.masterId = datas[0];
							} else {
								param.masterId = rowData.id;
							}
							$.ajax({
								type: "POST",
								url : "/seeyon/rest/quartzManager/stop",
								data : JSON.stringify(param),
								dataType: "json",
								contentType : 'application/json;charset=UTF-8',
								success: function (res) {
									if(res.code == 0) {
										$.alert(res.data);
									} else {
										$.alert(res.message);
									}
								},
								complete: function () {
								},
								error: function (e) {
									top.$.error(e.responseText);
								}
							});
						}
					};
					/**
					 * 返回值
					 */
					return labelPrintingBtn;
				});